package modelo.escenario.tests;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Test;

import modelo.carrera.Conductor;
import modelo.comportamiento.Accion;
import modelo.comportamiento.Comportamiento;
import modelo.comportamiento.Conciencia;
import modelo.comportamiento.acciones.Acelerar;
import modelo.escenario.Ciudad;
import modelo.escenario.Cruce;
import modelo.escenario.Cuadra;
import modelo.escenario.Recorrido;
import modelo.geometria.Vector;
import modelo.vehiculos.Colectivo;
import modelo.vehiculos.SentidoVehiculo;

public class TestRecorridoVehiculo {
	
	@Test
	public void TestColectivo_RecorridoDesdeMexicoYHuergoHastaPaseoColonYChile_LlegaADestino(){
		
		Conductor conductor = new Conductor(new Comportamiento(new Conciencia()));
		double ancho = 3;
		double largo = 2;
		double velocidadActual = 100;
		double velocidadMax = 200;
		double aceleracionMax = 10;
		double frenadoMax = 20;
	
		Vector posicionInicialColectivo_MexicoHuergo = new Vector(45,3);
		Vector posicionFinalColectivo_PaseoColonyMexico = new Vector(45,18);
		SentidoVehiculo sentidoVehiculo = SentidoVehiculo.NORTE;
		Cruce cruceMexicoHuergo = Ciudad.getCiudad().getCruce(posicionInicialColectivo_MexicoHuergo);
		Cruce crucePaseoColonMexico = Ciudad.getCiudad().getCruce(posicionFinalColectivo_PaseoColonyMexico);
		
		Colectivo colectivo = new Colectivo(conductor, posicionInicialColectivo_MexicoHuergo, posicionFinalColectivo_PaseoColonyMexico, sentidoVehiculo, ancho,largo,velocidadActual,velocidadMax,aceleracionMax,frenadoMax,null );
		Accion acelerar = new Acelerar(70, 100);
		for (int i = 0; i < 10; i++) {
			System.out.println(" - posicion:"+colectivo.getPosicion().toString());
			colectivo.manejar(acelerar);
			colectivo.activar();
		}	
		System.out.println(" - posicion:"+colectivo.getPosicion().toString());
		
		Recorrido recorridoMinino = new Recorrido(Ciudad.getCiudad().getGuiaT());
		recorridoMinino.setCruceDesde(cruceMexicoHuergo);
		recorridoMinino.setCruceHasta(crucePaseoColonMexico);
		List<Cuadra> camino = recorridoMinino.getCaminoMinimo();
		
		assertEquals("HuergoChile",((Cuadra)camino.get(0)).getId());
		assertEquals("ChilePaseoColon",((Cuadra)camino.get(1)).getId());
		
		
		
	}

}
